package at.guigu.service.impl;

import at.guigu.controller.Code;
import at.guigu.dao.BookDao;
import at.guigu.exception.BusinessException;
import at.guigu.exception.SystemException;
import at.guigu.pojo.Book;
import at.guigu.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;


@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;

    /*-----------------------查询数据-------------------------*/
    // 查询所有数据
    @Override
    public List<Book> getAll() {
        // 异常拦截包装并将其转换成自定义的异常
        // 此处假设为系统异常，所以需要将异常e也传出去
        try {
            int i = 1/0;
        } catch (Exception e) {
            throw new SystemException(Code.SYST_EXC, "模拟系统异常", e);
        }
        return bookDao.getAll();
    }
    // 查询单条数据：通过id查询
    @Override
    public Book getById(Integer id) {
        // 异常拦截包装并将其转换成自定义的异常
        // 此处假设为业务异常，所以不需要将异常传出
        if (id == 0) {
            throw new BusinessException(Code.BUSI_EXC, "模拟业务异常");
        }
        return bookDao.getById(id);
    }
    // 静态单条件查询
    @Override
    public List<Book> selectBySingleConOne(Integer id) {
        return bookDao.selectBySingleConOne(id);
    }
    // 动态单条件查询——对象参数接收
    @Override
    public List<Book> selectBySingleConTwo(Book book) {
        return bookDao.selectBySingleConTwo(book);
    }
    // 动态单条件查询——Map集合参数接收
    @Override
    public List<Book> selectBySingleConTwoo(Map map) {
        return bookDao.selectBySingleConTwoo(map);
    }
    // 动态多条件查询——对象参数接收
    @Override
    public List<Book> selectByMaxConOne(Book book) {
        return bookDao.selectByMaxConOne(book);
    }
    // 动态多条件查询——Map集合参数接收
    @Override
    public List<Book> selectByMaxConTwo(Map map) {
        return bookDao.selectByMaxConTwo(map);
    }

    /*-----------------------添加/保存数据-------------------------*/
    @Override
    public boolean save(Book book) {
        return bookDao.save(book) > 0;
    }

    /*-----------------------更新/修改数据-------------------------*/
    @Override
    public boolean update(Book book) {
        return bookDao.update(book) > 0;
    }

    /*-----------------------删除数据-------------------------*/
    // 单条删除
    @Override
    public boolean deleteById(Integer id) {
        return bookDao.deleteById(id) > 0;
    }
    // 批量删除
    @Override
    public boolean deleteByIds(Integer[] ids) {
        return bookDao.deleteByIds(ids) > 0;
    }
}
